#include	"board.h"
#include  <rtthread.h> 

/**
  * @brief  控制 水泵，风机，加热电磁阀的各个IO口配置函数
  * @param  无
  * @retval 无
  */
void Control_GPIO_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;

    //开启GPIO端口时钟
    RCC_APB2PeriphClockCmd(FAN_GPIO_CLK|PUMP_GPIO_CLK|HEAT_GPIO_CLK, ENABLE);

	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Pin=FAN_GPIO_PIN;
	GPIO_Init(FAN_GPIO_PORT, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Pin=PUMP_GPIO_PIN;
	GPIO_Init(PUMP_GPIO_PORT, &GPIO_InitStructure);	

	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Pin=HEAT_GPIO_PIN;
	GPIO_Init(HEAT_GPIO_PORT, &GPIO_InitStructure);	

    FAN_OFF;                        //上电关闭输出
    PUMP_OFF;
    HEAT_OFF;	
}

/**
  * @brief  开水泵
  * @param  无
  * @retval 无
  */
void OpenPump(void)
{
    PUMP_ON;
}

/**
  * @brief  关水泵
  * @param  无
  * @retval 无
  */
void ClosePump(void)
{
    PUMP_OFF;
}

/**
  * @brief  开风机
  * @param  无
  * @retval 无
  */
void OpenFan(void)
{
    FAN_ON;
}

/**
  * @brief  关风机
  * @param  无
  * @retval 无
  */
void CloseFan(void)
{
    FAN_OFF;
}

/**
  * @brief  开加热电磁阀
  * @param  无
  * @retval 无
  */
void OpenHeat(void)
{
    HEAT_ON;
}

/**
  * @brief  关加热电磁阀
  * @param  无
  * @retval 无
  */
void CloseHeat(void)
{
    HEAT_OFF;
}

/*******************************这里是和空调外机除霜相关的代码**************************************************/
/**
 *	@brief :空调外机除霜函数(要在除霜线程中调用)
 *	@param :无
 *	@retval:无
 */
void Defrost(void)
{
//	static uint8_t flag1=0;   //除霜标志
//	int8_t OutEnvTemp=0;
//	int8_t OutTubeTemp=0;

//	OutEnvTemp=(int8_t)lcd_data_mailOutEnvironTemp.dat_u[0].dat_f;
//	OutTubeTemp=(int8_t)lcd_data_mailOutTubeTemp.dat_u[0].dat_f;

//	if(flag1==0)
//	{	//当前未处于除霜状态
//      if(OutTubeTemp<(OutEnvTemp-7))
//      {	//外盘管温度低于外环境温度7度
//          rt_thread_delay(1000*60*5);    //将线程挂起5min
//          OutEnvTemp=(int8_t)lcd_data_mailOutEnvironTemp.dat_u[0].dat_f;
//          OutTubeTemp=(int8_t)lcd_data_mailOutTubeTemp.dat_u[0].dat_f;   //线程刚唤醒就得重新读取温度数据
//          if(OutTubeTemp<(OutEnvTemp-7))	
//          {
//              //外盘管温度低于外环境温度7度，时间持续5min，进入空调除霜状态
//              /**
//               * 这里得将  PID控制停止   开启除霜模式(具体就是压缩机低速运行，停止外机风扇，四通阀断电，内风机停止)
//               */
//              OpenHeat();
//              CloseFan();
//              OpenPump(); 
//              flag1=1;  //设置为除霜状态 
//          }	
//      }
//	}
//	else if(flag1==1)
//	{   //当前处于除霜状态
//      if(OutTubeTemp>(OutEnvTemp+10))
//      {	//检测到外盘管温度大于外环境温度10度以上
//        /**
//         *  此处得将压缩机停止(停压缩机1min)
//         */
//        ClosePump();
//        rt_thread_delay(1000*60*1);   //将线程挂起1min
//        /**
//         *	四通阀供电，压缩机供电运行，外风扇运行,化霜完成 
//        */
//        OpenPump();   
//        CloseHeat(); 
//        OpenFan();     
//        flag1=0;  //设置为非除霜状态，同时开启PID控制
//      }
//	}
}